package v1

type SchedulingProfile string

const (
	// ProfileDefault 是默认的调度策略，任务会被正常调度。
	ProfileDefault SchedulingProfile = "Default"
	// ProfileLowCost 表示这是一个低成本、低优先级的任务，应被调度到专用节点。
	ProfileLowCost SchedulingProfile = "LowCost"
)

// SchedulingSpec 定义了调度相关的配置
type SchedulingSpec struct {
	// Replicas 仅在 Type=Service 时有效
	Replicas *int32 `json:"replicas,omitempty" yaml:"replicas,omitempty" validate:"omitempty,gte=1"` // gte比1大才可以

	// Retries 仅在 Type=Batch 时有效
	Retries *int `json:"retries,omitempty" yaml:"retries,omitempty" validate:"omitempty,gte=0"`

	// 定义了任务的调度意图
	Profile SchedulingProfile `json:"schedulingProfile,omitempty" yaml:"schedulingProfile,omitempty" validate:"omitempty,oneof=Default LowCost"`
}

// TaskTemplateSpec 为了分片批处理任务设定
type TaskTemplateSpec struct {
	Execution  *ExecutionSpec  `json:"execution" yaml:"execution" validate:"required"`
	Scheduling *SchedulingSpec `json:"scheduling,omitempty" yaml:"scheduling,omitempty"`
}
